home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / OpenGL 1.0 SDK / Headers / glut.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-05-18  |  16.3 KB  |  479 lines  |  [TEXT/CWIE]

  1. #ifndef __glut_h__
  2. #define __glut_h__
  3.  
  4. /* Copyright (c) Mark J. Kilgard, 1994, 1995, 1996. */
  5.  
  6. /* This program is freely distributable without licensing fees  and is
  7.    provided without guarantee or warrantee expressed or  implied. This
  8.    program is -not- in the public domain. */
  9.  
  10. #include "gl.h"
  11. #include "glu.h"
  12.  
  13. /* define APIENTRY and CALLBACK to null string if we aren't on Win32 */
  14. #if !defined(WIN32)
  15. #define APIENTRY
  16. #define CALLBACK
  17. #endif
  18.  
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22.  
  23. /**
  24.  GLUT API revision history:
  25.  
  26.  GLUT_API_VERSION is updated to reflect incompatible GLUT
  27.  API changes (interface changes, semantic changes, deletions,
  28.  or additions).
  29.  
  30.  GLUT_API_VERSION=1  First public release of GLUT.  11/29/94
  31.  
  32.  GLUT_API_VERSION=2  Added support for OpenGL/GLX multisampling,
  33.  extension.  Supports new input devices like tablet, dial and button
  34.  box, and Spaceball.  Easy to query OpenGL extensions.
  35.  
  36.  GLUT_API_VERSION=3  glutMenuStatus added.
  37.  
  38.  GLUT_API_VERSION=4  glutInitDisplayString, glutWarpPointer,
  39.  glutBitmapLength, glutStrokeLength, glutWindowStatusFunc, dynamic
  40.  video resize subAPI (NOT FINALIZED!).
  41. **/
  42. #ifndef GLUT_API_VERSION  /* allow this to be overriden */
  43. #define GLUT_API_VERSION        3
  44. #endif
  45.  
  46. /**
  47.  GLUT implementation revision history:
  48.  
  49.  GLUT_XLIB_IMPLEMENTATION is updated to reflect both GLUT
  50.  API revisions and implementation revisions (ie, bug fixes).
  51.  
  52.  GLUT_XLIB_IMPLEMENTATION=1  mjk's first public release of
  53.  GLUT Xlib-based implementation.  11/29/94
  54.  
  55.  GLUT_XLIB_IMPLEMENTATION=2  mjk's second public release of
  56.  GLUT Xlib-based implementation providing GLUT version 2 
  57.  interfaces.
  58.  
  59.  GLUT_XLIB_IMPLEMENTATION=3  mjk's GLUT 2.2 images. 4/17/95
  60.  
  61.  GLUT_XLIB_IMPLEMENTATION=4  mjk's GLUT 2.3 images. 6/?/95
  62.  
  63.  GLUT_XLIB_IMPLEMENTATION=5  mjk's GLUT 3.0 images. 10/?/95
  64.  
  65.  GLUT_XLIB_IMPLEMENTATION=7  mjk's GLUT 3.1+ with glutWarpPoitner.  7/24/96
  66.  
  67.  GLUT_XLIB_IMPLEMENTATION=8  mjk's GLUT 3.1+ with glutWarpPoitner
  68.  and video resize.  1/3/97
  69.  
  70.  GLUT_XLIB_IMPLEMENTATION=9  mjk's GLUT 3.4 release with early GLUT 4 routines.
  71. **/
  72. #ifndef GLUT_XLIB_IMPLEMENTATION  /* Allow this to be overriden. */
  73. #define GLUT_XLIB_IMPLEMENTATION    9
  74. #endif
  75.  
  76. /* Display mode bit masks. */
  77. #define GLUT_RGB            0
  78. #define GLUT_RGBA            GLUT_RGB
  79. #define GLUT_INDEX            1
  80. #define GLUT_SINGLE            0
  81. #define GLUT_DOUBLE            2
  82. #define GLUT_ACCUM            4
  83. #define GLUT_ALPHA            8
  84. #define GLUT_DEPTH            16
  85. #define GLUT_STENCIL            32
  86. #if (GLUT_API_VERSION >= 2)
  87. #define GLUT_MULTISAMPLE        128
  88. #define GLUT_STEREO            256
  89. #endif
  90. #if (GLUT_API_VERSION >= 3)
  91. #define GLUT_LUMINANCE            512
  92. #endif
  93.  
  94. #define GLUT_FULLSCREEN        1024
  95.  
  96. /* Mouse buttons. */
  97. #define GLUT_LEFT_BUTTON        0
  98. #define GLUT_MIDDLE_BUTTON        1
  99. #define GLUT_RIGHT_BUTTON        2
  100.  
  101. /* Mouse button  state. */
  102. #define GLUT_DOWN            0
  103. #define GLUT_UP                1
  104.  
  105. #if (GLUT_API_VERSION >= 2)
  106. /* function keys */
  107. #define GLUT_KEY_F1            1
  108. #define GLUT_KEY_F2            2
  109. #define GLUT_KEY_F3            3
  110. #define GLUT_KEY_F4            4
  111. #define GLUT_KEY_F5            5
  112. #define GLUT_KEY_F6            6
  113. #define GLUT_KEY_F7            7
  114. #define GLUT_KEY_F8            8
  115. #define GLUT_KEY_F9            9
  116. #define GLUT_KEY_F10            10
  117. #define GLUT_KEY_F11            11
  118. #define GLUT_KEY_F12            12
  119. /* directional keys */
  120. #define GLUT_KEY_LEFT            100
  121. #define GLUT_KEY_UP            101
  122. #define GLUT_KEY_RIGHT            102
  123. #define GLUT_KEY_DOWN            103
  124. #define GLUT_KEY_PAGE_UP        104
  125. #define GLUT_KEY_PAGE_DOWN        105
  126. #define GLUT_KEY_HOME            106
  127. #define GLUT_KEY_END            107
  128. #define GLUT_KEY_INSERT            108
  129. #endif
  130.  
  131. /* Entry/exit  state. */
  132. #define GLUT_LEFT            0
  133. #define GLUT_ENTERED            1
  134.  
  135. /* Menu usage  state. */
  136. #define GLUT_MENU_NOT_IN_USE        0
  137. #define GLUT_MENU_IN_USE        1
  138.  
  139. /* Visibility  state. */
  140. #define GLUT_NOT_VISIBLE        0
  141. #define GLUT_VISIBLE            1
  142.  
  143. /* Window status  state. */
  144. #define GLUT_HIDDEN            0
  145. #define GLUT_FULLY_RETAINED        1
  146. #define GLUT_PARTIALLY_RETAINED        2
  147. #define GLUT_FULLY_COVERED        3
  148.  
  149. /* Color index component selection values. */
  150. #define GLUT_RED            0
  151. #define GLUT_GREEN            1
  152. #define GLUT_BLUE            2
  153.  
  154. /* Layers for use. */
  155. #define GLUT_NORMAL            0
  156. #define GLUT_OVERLAY            1
  157.  
  158. #if defined(WIN32)
  159. /* Stroke font constants (use these in GLUT program). */
  160. #define GLUT_STROKE_ROMAN        ((void*)0)
  161. #define GLUT_STROKE_MONO_ROMAN        ((void*)1)
  162.  
  163. /* Bitmap font constants (use these in GLUT program). */
  164. #define GLUT_BITMAP_9_BY_15        ((void*)2)
  165. #define GLUT_BITMAP_8_BY_13        ((void*)3)
  166. #define GLUT_BITMAP_TIMES_ROMAN_10    ((void*)4)
  167. #define GLUT_BITMAP_TIMES_ROMAN_24    ((void*)5)
  168. #if (GLUT_API_VERSION >= 3)
  169. #define GLUT_BITMAP_HELVETICA_10    ((void*)6)
  170. #define GLUT_BITMAP_HELVETICA_12    ((void*)7)
  171. #define GLUT_BITMAP_HELVETICA_18    ((void*)8)
  172. #endif
  173. #else
  174. /* Stroke font opaque addresses (use constants instead in source code). */
  175. extern void *glutStrokeRoman;
  176. extern void *glutStrokeMonoRoman;
  177.  
  178. /* Stroke font constants (use these in GLUT program). */
  179. #define GLUT_STROKE_ROMAN        (&glutStrokeRoman)
  180. #define GLUT_STROKE_MONO_ROMAN        (&glutStrokeMonoRoman)
  181.  
  182. /* Bitmap font opaque addresses (use constants instead in source code). */
  183. extern void *glutBitmap9By15;
  184. extern void *glutBitmap8By13;
  185. extern void *glutBitmapTimesRoman10;
  186. extern void *glutBitmapTimesRoman24;
  187. extern void *glutBitmapHelvetica10;
  188. extern void *glutBitmapHelvetica12;
  189. extern void *glutBitmapHelvetica18;
  190.  
  191. /* Bitmap font constants (use these in GLUT program). */
  192. #define GLUT_BITMAP_9_BY_15        (&glutBitmap9By15)
  193. #define GLUT_BITMAP_8_BY_13        (&glutBitmap8By13)
  194. #define GLUT_BITMAP_TIMES_ROMAN_10    (&glutBitmapTimesRoman10)
  195. #define GLUT_BITMAP_TIMES_ROMAN_24    (&glutBitmapTimesRoman24)
  196. #if (GLUT_API_VERSION >= 3)
  197. #define GLUT_BITMAP_HELVETICA_10    (&glutBitmapHelvetica10)
  198. #define GLUT_BITMAP_HELVETICA_12    (&glutBitmapHelvetica12)
  199. #define GLUT_BITMAP_HELVETICA_18    (&glutBitmapHelvetica18)
  200. #endif
  201. #endif
  202.  
  203. /* glutGet parameters. */
  204. #define GLUT_WINDOW_X            100
  205. #define GLUT_WINDOW_Y            101
  206. #define GLUT_WINDOW_WIDTH        102
  207. #define GLUT_WINDOW_HEIGHT        103
  208. #define GLUT_WINDOW_BUFFER_SIZE        104
  209. #define GLUT_WINDOW_STENCIL_SIZE    105
  210. #define GLUT_WINDOW_DEPTH_SIZE        106
  211. #define GLUT_WINDOW_RED_SIZE        107
  212. #define GLUT_WINDOW_GREEN_SIZE        108
  213. #define GLUT_WINDOW_BLUE_SIZE        109
  214. #define GLUT_WINDOW_ALPHA_SIZE        110
  215. #define GLUT_WINDOW_ACCUM_RED_SIZE    111
  216. #define GLUT_WINDOW_ACCUM_GREEN_SIZE    112
  217. #define GLUT_WINDOW_ACCUM_BLUE_SIZE    113
  218. #define GLUT_WINDOW_ACCUM_ALPHA_SIZE    114
  219. #define GLUT_WINDOW_DOUBLEBUFFER    115
  220. #define GLUT_WINDOW_RGBA        116
  221. #define GLUT_WINDOW_PARENT        117
  222. #define GLUT_WINDOW_NUM_CHILDREN    118
  223. #define GLUT_WINDOW_COLORMAP_SIZE    119
  224. #if (GLUT_API_VERSION >= 2)
  225. #define GLUT_WINDOW_NUM_SAMPLES        120
  226. #define GLUT_WINDOW_STEREO        121
  227. #endif
  228. #if (GLUT_API_VERSION >= 3)
  229. #define GLUT_WINDOW_CURSOR        122
  230. #endif
  231. #define GLUT_SCREEN_WIDTH        200
  232. #define GLUT_SCREEN_HEIGHT        201
  233. #define GLUT_SCREEN_WIDTH_MM        202
  234. #define GLUT_SCREEN_HEIGHT_MM        203
  235. #define GLUT_MENU_NUM_ITEMS        300
  236. #define GLUT_DISPLAY_MODE_POSSIBLE    400
  237. #define GLUT_INIT_WINDOW_X        500
  238. #define GLUT_INIT_WINDOW_Y        501
  239. #define GLUT_INIT_WINDOW_WIDTH        502
  240. #define GLUT_INIT_WINDOW_HEIGHT        503
  241. #define GLUT_INIT_DISPLAY_MODE        504
  242. #if (GLUT_API_VERSION >= 2)
  243. #define GLUT_ELAPSED_TIME        700
  244. #endif
  245.  
  246. #if (GLUT_API_VERSION >= 2)
  247. /* glutDeviceGet parameters. */
  248. #define GLUT_HAS_KEYBOARD        600
  249. #define GLUT_HAS_MOUSE            601
  250. #define GLUT_HAS_SPACEBALL        602
  251. #define GLUT_HAS_DIAL_AND_BUTTON_BOX    603
  252. #define GLUT_HAS_TABLET            604
  253. #define GLUT_NUM_MOUSE_BUTTONS        605
  254. #define GLUT_NUM_SPACEBALL_BUTTONS    606
  255. #define GLUT_NUM_BUTTON_BOX_BUTTONS    607
  256. #define GLUT_NUM_DIALS            608
  257. #define GLUT_NUM_TABLET_BUTTONS        609
  258. #endif
  259.  
  260. #if (GLUT_API_VERSION >= 3)
  261. /* glutLayerGet parameters. */
  262. #define GLUT_OVERLAY_POSSIBLE           800
  263. #define GLUT_LAYER_IN_USE        801
  264. #define GLUT_HAS_OVERLAY        802
  265. #define GLUT_TRANSPARENT_INDEX        803
  266. #define GLUT_NORMAL_DAMAGED        804
  267. #define GLUT_OVERLAY_DAMAGED        805
  268.  
  269. #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
  270. /* glutVideoResizeGet parameters. */
  271. #define GLUT_VIDEO_RESIZE_POSSIBLE    900
  272. #define GLUT_VIDEO_RESIZE_IN_USE    901
  273. #define GLUT_VIDEO_RESIZE_X_DELTA    902
  274. #define GLUT_VIDEO_RESIZE_Y_DELTA    903
  275. #define GLUT_VIDEO_RESIZE_WIDTH_DELTA    904
  276. #define GLUT_VIDEO_RESIZE_HEIGHT_DELTA    905
  277. #define GLUT_VIDEO_RESIZE_X        906
  278. #define GLUT_VIDEO_RESIZE_Y        907
  279. #define GLUT_VIDEO_RESIZE_WIDTH        908
  280. #define GLUT_VIDEO_RESIZE_HEIGHT    909
  281. #endif
  282.  
  283. /* glutUseLayer parameters. */
  284. #define GLUT_NORMAL            0
  285. #define GLUT_OVERLAY            1
  286.  
  287. /* glutGetModifiers return mask. */
  288. #define GLUT_ACTIVE_SHIFT               1
  289. #define GLUT_ACTIVE_CTRL                2
  290. #define GLUT_ACTIVE_ALT                 4
  291.  
  292. /* glutSetCursor parameters. */
  293. /* Basic arrows. */
  294. #define GLUT_CURSOR_RIGHT_ARROW        0
  295. #define GLUT_CURSOR_LEFT_ARROW        1
  296. /* Symbolic cursor shapes. */
  297. #define GLUT_CURSOR_INFO        2
  298. #define GLUT_CURSOR_DESTROY        3
  299. #define GLUT_CURSOR_HELP        4
  300. #define GLUT_CURSOR_CYCLE        5
  301. #define GLUT_CURSOR_SPRAY        6
  302. #define GLUT_CURSOR_WAIT        7
  303. #define GLUT_CURSOR_TEXT        8
  304. #define GLUT_CURSOR_CROSSHAIR        9
  305. /* Directional cursors. */
  306. #define GLUT_CURSOR_UP_DOWN        10
  307. #define GLUT_CURSOR_LEFT_RIGHT        11
  308. /* Sizing cursors. */
  309. #define GLUT_CURSOR_TOP_SIDE        12
  310. #define GLUT_CURSOR_BOTTOM_SIDE        13
  311. #define GLUT_CURSOR_LEFT_SIDE        14
  312. #define GLUT_CURSOR_RIGHT_SIDE        15
  313. #define GLUT_CURSOR_TOP_LEFT_CORNER    16
  314. #define GLUT_CURSOR_TOP_RIGHT_CORNER    17
  315. #define GLUT_CURSOR_BOTTOM_RIGHT_CORNER    18
  316. #define GLUT_CURSOR_BOTTOM_LEFT_CORNER    19
  317. /* Inherit from parent window. */
  318. #define GLUT_CURSOR_INHERIT        100
  319. /* Blank cursor. */
  320. #define GLUT_CURSOR_NONE        101
  321. /* Fullscreen crosshair (if available). */
  322. #define GLUT_CURSOR_FULL_CROSSHAIR    102
  323. #endif
  324.  
  325. /* GLUT initialization sub-API. */
  326. extern void APIENTRY glutInitMac(int *argcp, char ***argv);
  327. #define glutInit(argcp, argv) glutInitMac((argcp), &(argv))
  328.  
  329. extern void APIENTRY glutInitDisplayMode(unsigned int mode);
  330. #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
  331. extern void APIENTRY glutInitDisplayString(const char *string);
  332. #endif
  333. extern void APIENTRY glutInitWindowPosition(int x, int y);
  334. extern void APIENTRY glutInitWindowSize(int width, int height);
  335. extern void APIENTRY glutMainLoop(void);
  336.  
  337. /* GLUT window sub-API. */
  338. extern int APIENTRY glutCreateWindow(const char *title);
  339. extern int APIENTRY glutCreatePlainWindow(const char *title);
  340. extern int APIENTRY glutCreateSubWindow(int win, int x, int y, int width, int height);
  341. extern void APIENTRY glutDestroyWindow(int win);
  342. extern void APIENTRY glutPostRedisplay(void);
  343. extern void APIENTRY glutSwapBuffers(void);
  344. extern int APIENTRY glutGetWindow(void);
  345. extern void APIENTRY glutSetWindow(int win);
  346. extern void APIENTRY glutSetWindowTitle(const char *title);
  347. extern void APIENTRY glutSetIconTitle(const char *title);
  348. extern void APIENTRY glutPositionWindow(int x, int y);
  349. extern void APIENTRY glutReshapeWindow(int width, int height);
  350. extern void APIENTRY glutPopWindow(void);
  351. extern void APIENTRY glutPushWindow(void);
  352. extern void APIENTRY glutIconifyWindow(void);
  353. extern void APIENTRY glutShowWindow(void);
  354. extern void APIENTRY glutHideWindow(void);
  355. #if (GLUT_API_VERSION >= 3)
  356. extern void APIENTRY glutFullScreen(void);
  357. extern void APIENTRY glutSetCursor(int cursor);
  358. #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
  359. extern void APIENTRY glutWarpPointer(int x, int y);
  360. #endif
  361.  
  362. /* GLUT overlay sub-API. */
  363. extern void APIENTRY glutEstablishOverlay(void);
  364. extern void APIENTRY glutRemoveOverlay(void);
  365. extern void APIENTRY glutUseLayer(GLenum layer);
  366. extern void APIENTRY glutPostOverlayRedisplay(void);
  367. extern void APIENTRY glutShowOverlay(void);
  368. extern void APIENTRY glutHideOverlay(void);
  369. #endif
  370.  
  371. /* GLUT menu sub-API. */
  372. extern int APIENTRY glutCreateMenu(void (*)(int));
  373. extern void APIENTRY glutDestroyMenu(int menu);
  374. extern int APIENTRY glutGetMenu(void);
  375. extern void APIENTRY glutSetMenu(int menu);
  376. extern void APIENTRY glutAddMenuEntry(const char *label, int value);
  377. extern void APIENTRY glutAddSubMenu(const char *label, int submenu);
  378. extern void APIENTRY glutChangeToMenuEntry(int item, const char *label, int value);
  379. extern void APIENTRY glutChangeToSubMenu(int item, const char *label, int submenu);
  380. extern void APIENTRY glutRemoveMenuItem(int item);
  381. extern void APIENTRY glutAttachMenu(int button);
  382. extern void APIENTRY glutAttachMenuName(int button, char *menu_name);
  383. extern void APIENTRY glutDetachMenu(int button);
  384.  
  385. /* GLUT  sub-API. */
  386. extern void APIENTRY glutDisplayFunc(void (*)(void));
  387. extern void APIENTRY glutReshapeFunc(void (*)(int width, int height));
  388. extern void APIENTRY glutKeyboardFunc(void (*)(unsigned char key, int x, int y));
  389. extern void APIENTRY glutMouseFunc(void (*)(int button, int state, int x, int y));
  390. extern void APIENTRY glutMotionFunc(void (*)(int x, int y));
  391. extern void APIENTRY glutPassiveMotionFunc(void (*)(int x, int y));
  392. extern void APIENTRY glutEntryFunc(void (*)(int state));
  393. extern void APIENTRY glutVisibilityFunc(void (*)(int state));
  394. extern void APIENTRY glutIdleFunc(void (*)(void));
  395. extern void APIENTRY glutTimerFunc(unsigned int millis, void (*)(int value), int value);
  396. extern void APIENTRY glutMenuStateFunc(void (*)(int state));
  397. #if (GLUT_API_VERSION >= 2)
  398. extern void APIENTRY glutSpecialFunc(void (*)(int key, int x, int y));
  399. extern void APIENTRY glutSpaceballMotionFunc(void (*)(int x, int y, int z));
  400. extern void APIENTRY glutSpaceballRotateFunc(void (*)(int x, int y, int z));
  401. extern void APIENTRY glutSpaceballButtonFunc(void (*)(int button, int state));
  402. extern void APIENTRY glutButtonBoxFunc(void (*)(int button, int state));
  403. extern void APIENTRY glutDialsFunc(void (*)(int dial, int value));
  404. extern void APIENTRY glutTabletMotionFunc(void (*)(int x, int y));
  405. extern void APIENTRY glutTabletButtonFunc(void (*)(int button, int state, int x, int y));
  406. #if (GLUT_API_VERSION >= 3)
  407. extern void APIENTRY glutMenuStatusFunc(void (*)(int status, int x, int y));
  408. extern void APIENTRY glutOverlayDisplayFunc(void (*)(void));
  409. #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
  410. extern void APIENTRY glutWindowStatusFunc(void (*)(int state));
  411. #endif
  412. #endif
  413. #endif
  414.  
  415. /* GLUT color index sub-API. */
  416. extern void APIENTRY glutSetColor(int, GLfloat red, GLfloat green, GLfloat blue);
  417. extern GLfloat APIENTRY glutGetColor(int ndx, int component);
  418. extern void APIENTRY glutCopyColormap(int win);
  419.  
  420. /* GLUT state retrieval sub-API. */
  421. extern int APIENTRY glutGet(GLenum type);
  422. extern int APIENTRY glutDeviceGet(GLenum type);
  423. #if (GLUT_API_VERSION >= 2)
  424. /* GLUT extension support sub-API */
  425. extern int APIENTRY glutExtensionSupported(const char *name);
  426. #endif
  427. #if (GLUT_API_VERSION >= 3)
  428. extern int APIENTRY glutGetModifiers(void);
  429. extern int APIENTRY glutLayerGet(GLenum type);
  430. #endif
  431.  
  432. /* GLUT font sub-API */
  433. extern void APIENTRY glutBitmapCharacter(void *font, int character);
  434. extern int APIENTRY glutBitmapWidth(void *font, int character);
  435. extern void APIENTRY glutStrokeCharacter(void *font, int character);
  436. extern int APIENTRY glutStrokeWidth(void *font, int character);
  437. #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
  438. extern int APIENTRY glutBitmapLength(void *font, const unsigned char *string);
  439. extern int APIENTRY glutStrokeLength(void *font, const unsigned char *string);
  440. #endif
  441.  
  442. /* GLUT pre-built models sub-API */
  443. extern void APIENTRY glutWireSphere(GLdouble radius, GLint slices, GLint stacks);
  444. extern void APIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);
  445. extern void APIENTRY glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
  446. extern void APIENTRY glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
  447. extern void APIENTRY glutWireCube(GLdouble size);
  448. extern void APIENTRY glutSolidCube(GLdouble size);
  449. extern void APIENTRY glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
  450. extern void APIENTRY glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
  451. extern void APIENTRY glutWireDodecahedron(void);
  452. extern void APIENTRY glutSolidDodecahedron(void);
  453. extern void APIENTRY glutWireTeapot(GLdouble size);
  454. extern void APIENTRY glutSolidTeapot(GLdouble size);
  455. extern void APIENTRY glutWireOctahedron(void);
  456. extern void APIENTRY glutSolidOctahedron(void);
  457. extern void APIENTRY glutWireTetrahedron(void);
  458. extern void APIENTRY glutSolidTetrahedron(void);
  459. extern void APIENTRY glutWireIcosahedron(void);
  460. extern void APIENTRY glutSolidIcosahedron(void);
  461.  
  462. #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
  463. /* GLUT video resize sub-API. */
  464. extern int APIENTRY glutVideoResizeGet(GLenum param);
  465. extern void APIENTRY glutSetupVideoResizing(void);
  466. extern void APIENTRY glutStopVideoResizing(void);
  467. extern void APIENTRY glutVideoResize(int x, int y, int width, int height);
  468. extern void APIENTRY glutVideoPan(int x, int y, int width, int height);
  469.  
  470. /* GLUT debugging sub-API. */
  471. extern void APIENTRY glutReportErrors(void);
  472. #endif
  473.  
  474. #ifdef __cplusplus
  475. }
  476.  
  477. #endif
  478. #endif                  /* __glut_h__ */
  479.